home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / X11 / wais / ir / README < prev    next >
Text File  |  1995-05-09  |  5KB  |  113 lines

  1. README: WAIS Unix release 8 b5                Sun May 10 1992
  2. Brewster Kahle                     Thinking Machines Corp
  3. Brewster@think.com 
  4. ------------------------------------------------------------------------
  5.  
  6. WARRANTY DISCLAIMER
  7.  
  8. This software was created by Thinking Machines Corporation and is distributed 
  9. free of charge.  It is placed in the public domain and permission is granted 
  10. to anyone to use, duplicate, modify and redistribute it provided that this 
  11. notice is attached.
  12.  
  13. Thinking Machines Corporation provides absolutely NO WARRANTY OF ANY KIND with
  14. respect to this software.  The entire risk as to the quality and performance 
  15. of this software is with the user.  IN NO EVENT WILL THINKING MACHINES 
  16. CORPORATION BE LIABLE TO ANYONE FOR ANY DAMAGES ARISING OUT THE USE OF THIS
  17. SOFTWARE, INCLUDING, WITHOUT LIMITATION, DAMAGES RESULTING FROM LOST DATA OR
  18. LOST PROFITS, OR FOR ANY SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES.
  19.  
  20.  
  21. This directory contains software for creating a sample server, protocol
  22. software, and a low level user interface building tool.  See the readme
  23. file in the next directory up for details on how use this software.  This
  24. file will describe the overall structure of this directory.
  25.  
  26. To index files, a set of files called ir*.[ch] are used.  The file
  27. ircfiles.c allows for customization to new file formats and may want to be
  28. added to by sophisticated users.  irbuild.c contains the main program for
  29. this.
  30.  
  31. To create a server, the file server.c is used.
  32.  
  33. To make a server that does not use the inverted files (because you have
  34. your own database of some sort), change the ir.c file.  This is not as easy
  35. to do as we would like it to be.
  36.  
  37. The file ui.c is a low level tool for creating user interfaces.  The
  38. directory ../ui is built on top of that file.
  39.  
  40. The protocol software is broken into z39.50 files (z*) and wais protocol
  41. extension files (w*).  These files will be changed dramatically as the
  42. standards committee makes changes.  We will attempt to keep the ui.c
  43. interface the same.
  44.  
  45. The rough flow of a question from user to server is shown below.  These are
  46. not strictly levels of calling, rather, many of these files are tools that
  47. are called from the higher levels.
  48.  
  49. ../ui/shell-ui.c    /* a user interface, could be ../x, any other */
  50.     ui.c        /* user interface toolkit */
  51.    wprot.c + wutil.c     /* wais protocol */
  52.   zprot.c + zutil.c    /* Z39.50 protocol */
  53.  transport.c        /* ready the message for transport */
  54. sockets.c        /* use sockets as a transport */
  55.  transport.c        
  56.   zprot.c + zutil.c    
  57.    wprot.c + wutil.c     
  58.     ir.c        /* server toolkit file */
  59.      irsearch.c        /* searching the inverted file indices */
  60.  
  61. If you want to make a new type of server look in ir.c;
  62. if you want to make a new user interface, look in ui.c.
  63.  
  64.  
  65. The Indexer
  66.  
  67. This is a very simple inverted file system with primitive word weighting.
  68.  
  69. What is created is an inverted index of all the words over 2 characters
  70. long in the input text.  Words are truncated to 20 characters.  Each word
  71. has weight associated with it; the first time it occurs in a document it
  72. gets an extra weight of 5, and from then on, it gets a weight of 1 in that
  73. document.  Words in the headline are worth an extra 10.
  74.   Searching is done by finding the documents with the most word weights for
  75. each word in the query.  Relevant document's words are worth 10 times less.
  76.  
  77. For indexing files the structure is:
  78. irbuild.c        /* top level main */
  79.  irtfiles.c         /* parses the file */ 
  80.       (using ircfiles.c) /* rules for parsing files into documents */
  81.   irfiles.c        /* file structures except inverted file */
  82.    irext.h         /* defines interface with particular backends */
  83.     irhash.c        /* add_word definition for inverted file */
  84.      irinv.c        /* inverted file definition */
  85.  
  86. **** NOTE ****
  87.  
  88. There are a few compile time symbols used in the building of the database
  89. files that are of particular interest to database maintainers.  These
  90. symbols control the size of certain fields within the index files, and
  91. hence the total number of index objects that can be stored within these
  92. files.  They must be changed to increase the number of records a database
  93. may contain.
  94.  
  95. They are:
  96.  
  97.  DOC_TAB_ENTRY_FILENAME_ID_SIZE
  98.  
  99.  DOC_TAB_ENTRY_HEADLINE_ID_SIZE
  100.  
  101. Each of these are set to 3 in irfiles.c, which limits the size of the
  102. filename and headline tables to 16M.  Setting these to 4 allows these
  103. tables to grow to 4G (which is a limit to most file systems), but you
  104. should be aware that this will produce indexes that cannot be read by
  105. standard servers.  You must also increase the the DOC_TAB_ELEMENT_SIZE
  106. (which is the sum of the size of the fields in the document table).
  107.  
  108. If you get an error claiming a particular number cannot be represented in 3
  109. bytes, this is probably the reason.  These errors usually occur when
  110. indexing data types that are almost all headline (like archie and the
  111. one_line type), or when the total length of the headlines is greater than
  112. 16 megabytes (as with very large databases).
  113.